package com.macro.mall.portal.domain;

import com.macro.mall.model.OmsAgentSend;
import com.macro.mall.model.OmsOrder;
import com.macro.mall.model.OmsOrderItem;
import com.macro.mall.model.OmsOrderSetting;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
import java.util.Map;

/**
 * 包含订单商品信息的订单详情
 */
@Data
public class OmsOrderDetail extends OmsOrder {
    @ApiModelProperty("订单下的商品集合")
    private List<OmsOrderItem> orderItemList;

    @ApiModelProperty("订单下商品集合包含组合商品")
    private List<OrderItemDetail> orderItemDetails;

    @ApiModelProperty("经纪人发货数据")
    private Map<Long,List<OmsAgentSend>> agentSendMap;
    @ApiModelProperty("商品总数量")
    private Integer totalQuantity;
    @ApiModelProperty("订单总佣金")
    private BigDecimal totalCommission;
    @ApiModelProperty("售后申请类型：0->仅退款；1->退货退款；2->换货")
    private Integer returnType;
    @ApiModelProperty("售后申请状态：0->待处理；1->退货中；2->已完成；3->已拒绝")
    private Integer returnStatus;
    @ApiModelProperty("退款单编号")
    private String returnOrderSn;
    @ApiModelProperty("退款金额")
    private BigDecimal returnAmount;
    @ApiModelProperty("退款说明")
    private String returnDescription;
    @ApiModelProperty("申请时间")
    private Date returnCreateTime;
    @ApiModelProperty("退款原因")
    private String returnReason;
    @ApiModelProperty("退款时间")
    private Date returnHandleTime;
    @ApiModelProperty("凭证图片")
    private String returnProofPics;
    @ApiModelProperty("订单时间相关")
    private OmsOrderSetting orderSetting;
    @ApiModelProperty("订单时间相关")
    private Long unPayAutoCancel;
    @ApiModelProperty("该团购下已经下单的订单数量")
    private Integer orderBodyNum;
    @ApiModelProperty("成团要求人数")
    private Integer groupSize;
    @ApiModelProperty("团购到期时间")
    private Long groupBuyAutoCancel;
    @ApiModelProperty("已经购买的订单头像")
    private List<Map<String,String>> pics;

    /**
     * 商品（可以有组合）
     */
    private List<CombinedPmsProduct> combinedPmsProduct;
    @ApiModelProperty("商品类型的type")
    private Integer productType;
}
